import { defineConfig } from 'vite'
import { resolve, join, sep } from 'path'
import { glob } from 'glob'
import { createHtmlPlugin } from 'vite-plugin-html';

// 获取 src/webcs 目录下的所有 ts 文件作为入口
const entries = Object.fromEntries(
  glob.sync(join('src', '*.ts').replace(/\\/g, '/')).filter(
    (file) => !file.endsWith('.d.ts')
  ).map(file => [
    // 输出的文件名 (不含扩展名)
    file.replace('src' + sep, '').replace('.ts', ''),
    // 文件的完整路径
    resolve(__dirname, file)
  ])
)

console.log(entries)

// https://vitejs.dev/config/
export default defineConfig(({ command }) => {
  if (command === 'serve') {
    return {
      root: './',
      plugins: [
        createHtmlPlugin({
          minify: false,
          template: 'index.html',
          inject: {
            tags: Object.keys(entries).map((entry) => ({
              tag: 'script',
              attrs: {
                type: 'module', src: `./src/${entry}.js`
              },
              injectTo: 'head',
              innerHTML: `import './webc/${entry}.js';`
            })
              // 注入到 index.html 的 <head> 中
              // injectTo: 'head'
            )
          },
        })
      ],
      server: {
        proxy: {
          "/api": {
            target: "https://www.cpzxrobot.com",
            changeOrigin: true,
          },
        },
      },
    }
  }

  if (command === 'build') {
    return {
      keepProcessEnv: false,
      define: {
        'process.env.NODE_ENV': '"production"',
      },
      build: {
        lib: {
          // 针对每个入口都构建成单独的库
          entry: entries,
          // 输出的文件名格式
          fileName: (format, entryName) => `${entryName}.js`,
          // 构建成 ES 模块
          formats: ['es']
        },
        // rollupOptions: {
        //   // 确保外部化处理那些你不想打包进库的依赖
        //   external: ['lit', 'lit/decorators.js'],
        //   output: {
        //     // 在 UMD 构建模式下为这些外部化的依赖提供一个全局变量
        //     globals: {
        //       lit: 'Lit',
        //       'lit/decorators.js': 'LitDecorators'
        //     }
        //   }
        // },
        // 输出目录
        outDir: 'dist/public/webc',
        // 清空输出目录
        emptyOutDir: true,
      }
    }
  }
})